
package poker;

// La clase Sistema contiene todos los elementos del programa.

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.Serializable;
import java.util.logging.Level;
import java.util.logging.Logger;
import prop.Mesa;
import java.util.List;
import java.util.Vector;
import prop.Configuracion;
import prop.DriverDomainRanking;


public class Sistema implements Serializable {

    // La ventana principal. Para referirse a ella en cualquier parte del
    // programa: Main.sist.vent
    public Ventana vent;
    public Mesa mesa;
    public List jugadores;
    public DriverDomainInterfaz ddi;
    public Partida partida;
    public DriverDomainRanking ddr;
    public DriverDomainRanking ddr2;
    public Configuracion conf;
    public SesionPoker sesion;

    public SesionPoker getSesion() {
        return sesion;
    }

    public void setDDR2(DriverDomainRanking d) {
        ddr2 = d;
    }

    public DriverDomainRanking getDDR2() {
        return ddr2;
    }

    public void nuevaSesion(Vector<JugadorPoker> jugs, int comodines, int partidas, String nom) {
        sesion = new SesionPoker(conf, ddi, jugs, comodines, partidas, nom);
        sesion.iniciarPartida();
    }

    public Configuracion cargarConf(String f) {
        f = Main.rutaProg + f;
        Configuracion c = null;
        ObjectInputStream o = null;
        try {
            o = new ObjectInputStream(new FileInputStream(f));
            c = (Configuracion) o.readObject();
            o.close();
        } catch (FileNotFoundException ex) {
            c = new Configuracion("");
            // valores por defecto
            c.setInt("NumComodines", 2);
            c.setInt("NumPartidas", 4);
            c.setInt("ApuestaInicial", 5);
            c.setInt("SaldoInicial", 5000);
            return c;
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(Sistema.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(Sistema.class.getName()).log(Level.SEVERE, null, ex);
        }
        return c;
    }

    public Sistema() {

        // carga la config
        conf = cargarConf("config.cnf");


        // carga el ranking
        ddr = new DriverDomainRanking(Main.rutaProg + "gral.grnk");

        System.err.println("ASDF");
        // carga la interfaz
        ddi = new DriverDomainInterfaz(this, ddr);

        System.err.println("FDSA");
    }

}
